package main

import (
	"fmt"
)

func add (a, b int, c, d string) (int, string) {
	return a + b, c + d
}

func swap(a, b int) {
	fmt.Println("[func|swap]a=", a, "b=", b)
	a, b = b, a
	fmt.Println("[func|swap]a=", a, "b=", b)
}

func swapRef(pa, pb *int) {
	fmt.Println("[func|swapRef]pa=", *pa, "pb=", *pb)
	temp := *pa
	*pa = *pb
	*pb = temp
	fmt.Println("[func|swapRef]pa=", *pa, "pb=", *pb)
}

func addAndSub(a, b int)(c, d int) {
	c = a + b
	d = a - b
	return
}

// func main() {
// 	a, b := 1, 2
// 	c, d := "Hello", "世界"
// 	fmt.Println(add(a, b, c, d))
// 	println("[func|main]a=", a, "b=", b)
// 	swap(a, b)
// 	println("[func|main]a=", a, "b=", b)
// 	fmt.Println()

// 	println("[func|main]pa=", a, "pb=", b)
// 	swapRef(&a, &b)
// 	println("[func|main]pa=", a, "pb=", b)
// 	fmt.Println()

// 	res1, res2 := addAndSub(a, b)
// 	println("[func|main]res1=", res1, "res2=", res2)
	
// 	res3 := func(a, b int) int  {
// 		return a + b
// 	}(10, 12)

// 	var sub = func(a, b int) int  {
// 		return a - b
// 	}

// 	println("[func|main]res3=", res3, "res4=", sub(a, b))
// }